home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 16 / CU Amiga Magazine's Super CD-ROM 16 (1997-10-16)(EMAP Images)(GB)[!][issue 1997-11].iso / CUCD / Graphics / Ghostscript / source / pj-gs.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1994-08-05  |  7KB  |  289 lines

  1. #!/bin/sh
  2.  
  3. # PaintJet driver script for Ghostscript,
  4. # created by Philippe-Andre Prindeville <philipp@res.enst.fr>
  5.  
  6. # PCL level 1 interface
  7. #
  8. #=======================================================================#
  9. # OPTIONS RECOGNIZED: ( all may be preceded with a "-" )        #
  10. #    NOTE: Options marked with a "*" before their descriptions    #
  11. #          are provided for backward compatibility with the        #
  12. #          former hp2225a, hp2227a and hp3630a printer models -    #
  13. #           these models have become links to this model. Consult    #
  14. #          your printer reference manual to determine which        #
  15. #          options are valid for your particular printer.        #
  16. #                                    #
  17. # Horizontal Pitch Selection:                        #
  18. #    c          compressed print mode                #
  19. #    e            * expanded print pitch                #
  20. #    10           * 10 cpi (Pica print pitch)            #
  21. #              (expanded compressed on thinkjet and quietjet)#
  22. #    12           * 12 cpi (Elite print pitch)            #
  23. #                                    #
  24. # Print Quality Selection                        #
  25. #    q | lq           * near letter quality                #
  26. #                                    #
  27. # Font Selection                            #
  28. #    b | bold      * set font stroke weight to bold            #
  29. #                                    #
  30. # Output filtering: (Default Cooked)                    #
  31. #    r | raw        raw mode for plotting mode etc.            #
  32. #                                    #
  33. # Other:                                #
  34. #       nb        do not output banner page (to save paper)    #
  35. #                                    #
  36. #        NOTE: * = NOT OFFICIAL PCL LEVEL 1 OPTIONS, USE OF    #
  37. #              THESE OPTIONS MAY OR MAY NOT PRODUCE        #
  38. #              DESIRED RESULTS.                #
  39. #=======================================================================# 
  40.  
  41. PATH="/bin:/usr/bin:/usr/lib:/usr/local/bin"
  42. export PATH
  43.  
  44. # set up redirection of stderr
  45. log=/usr/spool/lp/log
  46. exec 2>>$log
  47.  
  48. # sec_class=`getconf SECURITY_CLASS`
  49. sec_class=
  50. if [ $? -ne 0 ]
  51. then
  52.         echo "getconf SECURITY_CLASS failed"
  53. fi
  54.  
  55. # Save the arguments to the model
  56. printer=`basename $0`
  57.  
  58. if [ "$sec_class" = "2" ]       # B1 Trusted System
  59. then
  60.     reqid=$1
  61.     user=$2
  62.     dev=$3
  63.     title=$4
  64.     copies=$5
  65.     options=$6
  66. else
  67.     reqid=$1
  68.     user=$2
  69.     title=$3
  70.     copies=$4
  71.     options=$5
  72. fi
  73.  
  74.  
  75. # Definitions of functions used within this script
  76. do_banner()
  77. {
  78.     # Print the standard header
  79.     x="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
  80.     echo "$x\n$x\n$x\n$x\n"
  81.     banner `echo $user`
  82.     echo "\n"
  83.     user=`pwget -n $user | line | cut -d: -f5`
  84.     if [ -n "$user" ]
  85.     then
  86.         echo "User: $user\n"
  87.     else
  88.         echo "\n"
  89.     fi
  90.     echo "Request id: $reqid    Printer: `basename $0`\n"
  91.     date
  92.     echo "\n"
  93.     if [ -n "$title" ]
  94.     then
  95.         banner "$title" 
  96.     fi
  97.     echo "\014\r\c"
  98. }
  99.  
  100. # Set up interface
  101. if [ -t 1 ]
  102. then
  103.     stty 9600 opost onlcr -parenb cs8 ixon -istrip clocal tab3 <&1 2>/dev/null
  104. else
  105.     slp -n -k 2>/dev/null
  106. fi
  107.  
  108. # Handle disable and cancel traps.
  109. trap "echo 'Terminated: $reqid'  >> $log; trap 15; kill -15 0; exit 0 " 15
  110.  
  111. # Set up printer default modes
  112. echo "\033&k0S\c"        # reset pitches
  113. echo "\033(s0B\033)s0B\c"    # reset stroke weights
  114. echo "\033&d@\c"        # disable auto-underline
  115. echo "\033&l6D\c"        # reset to 6 lpi
  116. echo "\033(s0Q\c"        # reset print quality
  117. echo "\033&v0S\c"        # reset color
  118. echo "\033&k2G\c"        # Set line termination mode
  119.  
  120.  
  121. # Determine which options have been invoked
  122. pitch="def"
  123. weight="def"
  124. quality="def"
  125. # outputmode="cooked"
  126. outputmode="raw"
  127. # banner="yes"
  128. banner=
  129.  
  130. for i in $options
  131. do
  132.     case "$i" in
  133.     -c | c)   # compressed print
  134.         pitch="c";;
  135.  
  136.     -e | e)   # expanded print
  137.         pitch="e";;
  138.  
  139.     -10 | 10) # pitch set to 10 cpi
  140.         pitch="10";;
  141.  
  142.     -12 | 12) # pitch set to 12 cpi
  143.         pitch="12";;
  144.  
  145.     -q | q | -lq | lq) # near letter quality
  146.         quality=1;;
  147.  
  148.     -b | b | -bold | bold) # set font weight to bold
  149.         weight=1;;
  150.  
  151.     r | raw) # raw mode for binary output to printer
  152.         outputmode="raw";;
  153.  
  154.     -nb | nb) # do not output banner page
  155.         banner="";;
  156.  
  157.     esac
  158. done
  159.  
  160. shift; shift; shift; shift; shift
  161.  
  162. if [ "$sec_class" = "2" ]       # B1 Trusted System
  163. then
  164.     shift
  165.     files="$*"
  166.     Nofilter= Nolabel=
  167.     set -- `getopt fl $options`
  168.     if [ $? != 0 ]
  169.     then
  170.         exit 2
  171.     fi
  172.  
  173.     for opt in $*
  174.     do
  175.         shift
  176.         case $opt in
  177.           -f) Nofilter=$opt ;;
  178.           -l) Nolabel=$opt ;;
  179.           --) break ;;
  180.         esac
  181.     done
  182.  
  183.     # Print the sensitivity label of the process
  184.     echo "$x\n$x\n"
  185.     /usr/lib/lpbanner -j $reqid -t "$title" -u $user -p PCL1 -n $printer -d $dev $files
  186.     echo "\n$x\n$x"
  187.  
  188. else
  189.     # Assume that the rest of the arguments are files
  190.     files="$*"
  191.     # print the banner if nb option not specified
  192.     if [ -n "$banner" ]
  193.     then
  194.         do_banner
  195.     fi
  196. fi
  197.  
  198. # Print the spooled files
  199. i=1
  200. while [ $i -le $copies ]
  201. do
  202.         for file in $files
  203.         do
  204.  
  205.             # If raw mode, turn off output processing,
  206.             # set for no tab expansion
  207.             # If cooked mode, uncomment the cooked case if it is 
  208.             # desired not to print on the page perforations
  209.             case "$outputmode" in
  210.                 raw)    if [ -t 1 ]
  211.                     then
  212.                         stty raw 9600 -opost -parenb cs8 ixon -istrip clocal tab0 <&1 2>/dev/null
  213.                     else
  214.                         slp -r 2>/dev/null
  215.                     fi
  216.                     echo "\033&k0G";;        # Reset line termination mode
  217.             #    cooked)    echo "\033&l1L\r\c";;
  218.             esac
  219.  
  220.             case "$pitch" in
  221.                 def);;
  222.                 c)    echo "\033&k2S\r\c";;
  223.                 e)    echo "\033&k1S\r\c";;
  224.                 10)    echo "\033&k3S\r\c";;
  225.                 12)    echo "\033&k0S\r\c"
  226.                     echo "\033&k4S\r\c";;
  227.             esac
  228.  
  229.             case "$quality" in
  230.                 def);;
  231.                 *)    echo "\033(s${quality}Q\r\c";;
  232.             esac
  233.  
  234.             case "$weight" in
  235.                 def)    echo "\033(s0B\033)s0B\r\c";;
  236.                 *)    echo "\033(s${weight}B\r\c";;
  237.             esac
  238.  
  239.             if [ "$sec_class" = "2" ]    # B1 Trusted System
  240.             then
  241.                 /usr/lib/lprcat $Nofilter $Nolabel $file PCL1 $user $dev
  242.             else
  243.                 type=`file $file | sed 's/^[^:]*..//'`
  244.                 case "$type" in
  245.                 postscript*)
  246. #
  247. # We could do the following, but this would leave gs with a rather large
  248. # image in memory for (possibly) several minutes.  Better to use and
  249. # intermediate file, since cat is "lightweight"...
  250. #
  251. #                    gs -q -sDEVICE=paintjet -r180 -sOutputFile=- -dDISKFONTS -dNOPAUSE - < $file 2>/tmp/sh$$
  252.  
  253.                     gs -q -sDEVICE=paintjet -r180 -sOutputFile=/tmp/pj$$ -dDISKFONTS -dNOPAUSE - < $file 1>2
  254.                     cat /tmp/pj$$
  255.                     rm /tmp/pj$$
  256.                     needff=
  257.                     ;;
  258.                 *)    cat "$file" 2>/tmp/sh$$
  259.                     needff=1
  260.                     ;;
  261.                 esac
  262.  
  263.                 if [ -s /tmp/sh$$ ]
  264.                 then
  265. #                    cat /tmp/sh$$    # output any errors
  266.                     cat /tmp/sh$$ 1>2    # output any errors
  267.                 fi
  268.                 rm -f /tmp/sh$$
  269.                 if [ $needff ]; then echo "\014\r\c"; fi
  270.             fi
  271.  
  272.             echo "\033&k0S\r\c"        # reset pitches
  273.             echo "\033(s0B\033)s0B\r\c"    # reset stroke weights
  274.             echo "\033&d@\r\c"        # disable auto-underline
  275.             echo "\033&l6D\r\c"        # reset to 6 lpi
  276.             echo "\033(s0Q\c"        # reset print quality
  277.             echo "\033&v0S\c"        # reset color
  278.         done
  279.         i=`expr $i + 1`
  280.     done
  281.  
  282. # Insure all buffers are flushed to printer
  283. if [ -t 1 ]
  284. then
  285.     stty 9600 opost onlcr -parenb cs8 ixon -istrip clocal tab3 <&1 2>/dev/null
  286. fi
  287.  
  288. exit 0
  289.